﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Lavanderia.Entities;
using Lavanderia.Repository;
using Microsoft.Practices.Unity;

namespace Lavanderia.BL
{
    public class UsuarioBL:IUsuarioBL
    {
        [Dependency]
        public IUsuarioRepository usuarioDAO { get; set; }

        public List<USUARIO> GetALLFromUsuario()
        {
            return usuarioDAO.GetALLFromUsuario();
        }

        public List<USUARIO> GetAllFromUsuarioByPersona(string criterio)
        {
            return usuarioDAO.GetAllFromUsuarioByPersona(criterio);
        }

        public USUARIO GetAllFromUsuarioByPersonaId(string dni)
        {
            return usuarioDAO.GetAllFromUsuarioByPersonaId(dni);
        }

        public void Ingresar(USUARIO usuario)
        {
            var existe = usuarioDAO.ExisteUsuario(usuario.TRABAJADOR.Dni, usuario.Password);

            if (!existe)
            {
                var error = string.Format("USUARIO NO REGISTRADO");
                throw new Exception(error);
            }
        }

        public void VerificarAsignacion(int personaId)
        {
            var existe = usuarioDAO.ExisteUsuarioRol(personaId);

            if (existe)
            {
                var error = string.Format("Usuario ya asignado a un Rol, pero puede Editarlo");
                throw new Exception(error);
            }
        }

        public void ValidarPasswd(USUARIO usuario)
        {
            var existe = usuarioDAO.PasswdCorrecta(usuario.Password);

            if (!existe)
            {
                var error = string.Format("PASSWORD INCORRECTA");
                throw new Exception(error);
            }
        }

        public void AddUsuario(USUARIO usuario)
        {
            usuarioDAO.AddUsuario(usuario);
        }

        public void UpdateUsuario(USUARIO usuario)
        {
            usuarioDAO.UpdateUsuario(usuario);
        }

        public void DeleteUsuario(int id)
        {
            usuarioDAO.DeleteUsuario(id);
        }

        public void UpdatePasswdUsuario(USUARIO usuario)
        {
            usuarioDAO.UpdatePasswdUsuario(usuario);
        }
    }
}
